//
//  PersistenceController .swift
//  ptbuy
//
//  Created by MyMac on 2024/11/15.
//

import CoreData
/*
 用于管理 Core Data 栈
 */
struct PersistenceController {
    static let shared = PersistenceController()

    let container: NSPersistentContainer

    init(inMemory: Bool = false) {
        container = NSPersistentContainer(name: "PtbuyModel") // 替换为你的 Core Data 模型名称
        if inMemory {
            container.persistentStoreDescriptions.first?.url = URL(fileURLWithPath: "/dev/null")
        }
        /*
         如果只是对数据模型做了简单的更改（如添加新的属性或修改属性类型），
         并且这些更改不会影响到现有的数据结构，
         可以尝试使用轻量级迁移。Core Data 可以自动处理简单的模型更改，而不需要手动创建映射模型
         */
        let description = container.persistentStoreDescriptions.first
        description?.shouldMigrateStoreAutomatically = true
        description?.shouldInferMappingModelAutomatically = true
        
        
        
        /*
         删除旧库，生产新库，但是会删除所有的已有数据
         */
//        let fileManager = FileManager.default
//        let storeURL = container.persistentStoreDescriptions.first!.url!
//
//        do {
//            try fileManager.removeItem(at: storeURL)
//        } catch {
//            print("Failed to delete old store: \(error)")
//        }

        
        
        
        container.loadPersistentStores { description, error in
            if let error = error {
                fatalError("Unresolved error \(error), \(error.localizedDescription)")
            }
        }
    }
}
